/*
 * Copyright (c) 2023 iQi.Co.Ltd. All rights reserved.
 */
 
using System.Collections.Generic;
using NetProtocol.POD;
using NetProtocol.Enum;
using IQIGame.Onigao.Game;
using IQIGame.Onigao.GamePlay;
using IQIGame.Onigao.Framework;
using System.Threading.Tasks;
using System;

namespace NetProtocol.Server {
	/// <summary>
	/// 中心服好友模块
	/// module : centerFriend
	/// </summary>
	public interface SNetCenterFriend : INetServerModule {
		Dictionary<int, MessageHandler> INetServerModule.GetModuleFunction()
        {	
            return new()
            {
                { NetMessageId.centerFriend_removeFriends, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.centerFriend_removeFriends, "Recv->" + data.ToString());
#endif
		                RemoveFriendsRequest _data = (RemoveFriendsRequest)data;
						return CS_removeFriends(session, _data.ids);
		            } 
            	},
                { NetMessageId.centerFriend_applyFriends, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.centerFriend_applyFriends, "Recv->" + data.ToString());
#endif
		                ApplyFriendsRequest _data = (ApplyFriendsRequest)data;
						return CS_applyFriends(session, _data.ids);
		            } 
            	},
                { NetMessageId.centerFriend_dealWithApply, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.centerFriend_dealWithApply, "Recv->" + data.ToString());
#endif
		                DealWithApplyRequest _data = (DealWithApplyRequest)data;
						return CS_dealWithApply(session, _data.ids, _data.allow);
		            } 
            	},
                { NetMessageId.centerFriend_addBlacklist, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.centerFriend_addBlacklist, "Recv->" + data.ToString());
#endif
		                AddBlacklistRequest _data = (AddBlacklistRequest)data;
						return CS_addBlacklist(session, _data.pid);
		            } 
            	},
                { NetMessageId.centerFriend_removeBlacklist, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.centerFriend_removeBlacklist, "Recv->" + data.ToString());
#endif
		                RemoveBlacklistRequest _data = (RemoveBlacklistRequest)data;
						return CS_removeBlacklist(session, _data.ids);
		            } 
            	},
                { NetMessageId.centerFriend_searchPlayer, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.centerFriend_searchPlayer, "Recv->" + data.ToString());
#endif
		                SearchPlayerRequest _data = (SearchPlayerRequest)data;
						return CS_searchPlayer(session, _data.guid);
		            } 
            	},
                { NetMessageId.centerFriend_setRemark, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.centerFriend_setRemark, "Recv->" + data.ToString());
#endif
		                SetRemarkRequest _data = (SetRemarkRequest)data;
						return CS_setRemark(session, _data.friendId, _data.remark);
		            } 
            	},
                { NetMessageId.centerFriend_recommend, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.centerFriend_recommend, "Recv->" + data.ToString());
#endif
		                RecommendRequest _data = (RecommendRequest)data;
						return CS_recommend(session);
		            } 
            	},
            };
        }
        
        Dictionary<int, Func<IReceiveMessage>> INetServerModule.GetModuleRequest() 
        {
	        return new ()
	        {
	        	{NetMessageId.centerFriend_removeFriends, ()=> new RemoveFriendsRequest()},
	        	{NetMessageId.centerFriend_applyFriends, ()=> new ApplyFriendsRequest()},
	        	{NetMessageId.centerFriend_dealWithApply, ()=> new DealWithApplyRequest()},
	        	{NetMessageId.centerFriend_addBlacklist, ()=> new AddBlacklistRequest()},
	        	{NetMessageId.centerFriend_removeBlacklist, ()=> new RemoveBlacklistRequest()},
	        	{NetMessageId.centerFriend_searchPlayer, ()=> new SearchPlayerRequest()},
	        	{NetMessageId.centerFriend_setRemark, ()=> new SetRemarkRequest()},
	        	{NetMessageId.centerFriend_recommend, ()=> new RecommendRequest()},
	        };
	    }
        
#region Server-side Interface
		/// <summary>
        ///  删除好友
        /// </summary>
	    protected RemoveFriendsResult CS_removeFriends(ISession session, List<long> ids);
		/// <summary>
        ///  发送申请
        /// </summary>
	    protected ApplyFriendsResult CS_applyFriends(ISession session, List<long> ids);
		/// <summary>
        ///  处理申请
        /// </summary>
	    protected DealWithApplyResult CS_dealWithApply(ISession session, List<long> ids, bool allow);
		/// <summary>
        ///  添加黑名单
        /// </summary>
	    protected AddBlacklistResult CS_addBlacklist(ISession session, long pid);
		/// <summary>
        ///  移除黑名单
        /// </summary>
	    protected RemoveBlacklistResult CS_removeBlacklist(ISession session, List<long> ids);
		/// <summary>
        ///  搜索玩家
        /// </summary>
	    protected SearchPlayerResult CS_searchPlayer(ISession session, string guid);
		/// <summary>
        ///  设置备注
        /// </summary>
	    protected SetRemarkResult CS_setRemark(ISession session, long friendId, string remark);
		/// <summary>
        ///  取得推荐
        /// </summary>
	    protected RecommendResult CS_recommend(ISession session);
#endregion
#region Client-side Interface
		/// <summary>
        /// 
        /// </summary>
        public RemoveFriendsResult SC_removeFriendsResult(Task<RemoveFriendsResult> future){return new RemoveFriendsResult(future);}
        public RemoveFriendsResult SC_removeFriendsResult(int code){return new RemoveFriendsResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public ApplyFriendsResult SC_applyFriendsResult(Task<ApplyFriendsResult> future){return new ApplyFriendsResult(future);}
        public ApplyFriendsResult SC_applyFriendsResult(int code){return new ApplyFriendsResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public DealWithApplyResult SC_dealWithApplyResult(Task<DealWithApplyResult> future){return new DealWithApplyResult(future);}
        public DealWithApplyResult SC_dealWithApplyResult(int code){return new DealWithApplyResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public AddBlacklistResult SC_addBlacklistResult(Task<AddBlacklistResult> future){return new AddBlacklistResult(future);}
        public AddBlacklistResult SC_addBlacklistResult(int code){return new AddBlacklistResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public RemoveBlacklistResult SC_removeBlacklistResult(Task<RemoveBlacklistResult> future){return new RemoveBlacklistResult(future);}
        public RemoveBlacklistResult SC_removeBlacklistResult(int code){return new RemoveBlacklistResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public SearchPlayerResult SC_searchPlayerResult(Task<SearchPlayerResult> future){return new SearchPlayerResult(future);}
        public SearchPlayerResult SC_searchPlayerResult(int code, FriendPOD friend){return new SearchPlayerResult(code, friend);}
        public SearchPlayerResult SC_searchPlayerResult(int code){return new SearchPlayerResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public SetRemarkResult SC_setRemarkResult(Task<SetRemarkResult> future){return new SetRemarkResult(future);}
        public SetRemarkResult SC_setRemarkResult(int code, FriendPOD friend){return new SetRemarkResult(code, friend);}
        public SetRemarkResult SC_setRemarkResult(int code){return new SetRemarkResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public RecommendResult SC_recommendResult(Task<RecommendResult> future){return new RecommendResult(future);}
        public RecommendResult SC_recommendResult(int code, List<FriendPOD> friends){return new RecommendResult(code, friends);}
        public RecommendResult SC_recommendResult(int code){return new RecommendResult(code);}
		/// <summary>
        /// 通知添加
        /// </summary>
		public bool SC_notifyAddFriend(ISession session, List<FriendPOD> friends){
	        return NetProtocolHelper.SendMessage(session, new NotifyAddFriend(friends));
	    }
	    public void SC_notifyAddFriend_Broadcast(List<ISession> sessions, List<FriendPOD> friends){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyAddFriend(friends));
	    }
		/// <summary>
        /// 通知删除
        /// </summary>
		public bool SC_notifyDeleteFriend(ISession session, List<long> ids){
	        return NetProtocolHelper.SendMessage(session, new NotifyDeleteFriend(ids));
	    }
	    public void SC_notifyDeleteFriend_Broadcast(List<ISession> sessions, List<long> ids){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyDeleteFriend(ids));
	    }
		/// <summary>
        /// 通知修改
        /// </summary>
		public bool SC_notifyUpdateFriend(ISession session, List<FriendPOD> friends){
	        return NetProtocolHelper.SendMessage(session, new NotifyUpdateFriend(friends));
	    }
	    public void SC_notifyUpdateFriend_Broadcast(List<ISession> sessions, List<FriendPOD> friends){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyUpdateFriend(friends));
	    }
#endregion

#region Messages
	public class RemoveFriendsResult : MessageResult {
	    public RemoveFriendsResult(Task<RemoveFriendsResult> future): base(future) { }
		public RemoveFriendsResult(int code): base(code) { }
		public new RemoveFriendsResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<RemoveFriendsResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.centerFriend_removeFriendsResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_removeFriendsResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "CenterFriend.SC_removeFriendsResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class ApplyFriendsResult : MessageResult {
	    public ApplyFriendsResult(Task<ApplyFriendsResult> future): base(future) { }
		public ApplyFriendsResult(int code): base(code) { }
		public new ApplyFriendsResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<ApplyFriendsResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.centerFriend_applyFriendsResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_applyFriendsResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "CenterFriend.SC_applyFriendsResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class DealWithApplyResult : MessageResult {
	    public DealWithApplyResult(Task<DealWithApplyResult> future): base(future) { }
		public DealWithApplyResult(int code): base(code) { }
		public new DealWithApplyResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<DealWithApplyResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.centerFriend_dealWithApplyResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_dealWithApplyResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "CenterFriend.SC_dealWithApplyResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class AddBlacklistResult : MessageResult {
	    public AddBlacklistResult(Task<AddBlacklistResult> future): base(future) { }
		public AddBlacklistResult(int code): base(code) { }
		public new AddBlacklistResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<AddBlacklistResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.centerFriend_addBlacklistResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_addBlacklistResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "CenterFriend.SC_addBlacklistResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class RemoveBlacklistResult : MessageResult {
	    public RemoveBlacklistResult(Task<RemoveBlacklistResult> future): base(future) { }
		public RemoveBlacklistResult(int code): base(code) { }
		public new RemoveBlacklistResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<RemoveBlacklistResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.centerFriend_removeBlacklistResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_removeBlacklistResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "CenterFriend.SC_removeBlacklistResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class SearchPlayerResult : MessageResult {
	    private FriendPOD friend;
	    public SearchPlayerResult(Task<SearchPlayerResult> future): base(future) { }
		public SearchPlayerResult(int code): base(code) { }
		public new SearchPlayerResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
	    internal SearchPlayerResult(int code, FriendPOD friend){
	        this.code = code;
	        this.friend = friend;
	    }
        public override MessageResult GetFutureResult(Task task) { return ((Task<SearchPlayerResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.centerFriend_searchPlayerResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_searchPlayerResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			_out.Write_pod(friend);
			return si_p;
		}
		public override string ToString() {
    		return "CenterFriend.SC_searchPlayerResult { "
			+ "code="
			+ code
			+ ", friend="
			+ friend
			+" }";
		}
	}
	public class SetRemarkResult : MessageResult {
	    private FriendPOD friend;
	    public SetRemarkResult(Task<SetRemarkResult> future): base(future) { }
		public SetRemarkResult(int code): base(code) { }
		public new SetRemarkResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
	    internal SetRemarkResult(int code, FriendPOD friend){
	        this.code = code;
	        this.friend = friend;
	    }
        public override MessageResult GetFutureResult(Task task) { return ((Task<SetRemarkResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.centerFriend_setRemarkResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_setRemarkResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			_out.Write_pod(friend);
			return si_p;
		}
		public override string ToString() {
    		return "CenterFriend.SC_setRemarkResult { "
			+ "code="
			+ code
			+ ", friend="
			+ friend
			+" }";
		}
	}
	public class RecommendResult : MessageResult {
	    private List<FriendPOD> friends;
	    public RecommendResult(Task<RecommendResult> future): base(future) { }
		public RecommendResult(int code): base(code) { }
		public new RecommendResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
	    internal RecommendResult(int code, List<FriendPOD> friends){
	        this.code = code;
	        this.friends = friends == null ? null : new (friends);
	    }
        public override MessageResult GetFutureResult(Task task) { return ((Task<RecommendResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.centerFriend_recommendResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_recommendResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			_out.Write_list_pod(friends);
			return si_p;
		}
		public override string ToString() {
    		return "CenterFriend.SC_recommendResult { "
			+ "code="
			+ code
			+ ", friends="
			+ friends.ToString<FriendPOD>()
			+" }";
		}
	}
	public class NotifyAddFriend : MessageNotify {
		private List<FriendPOD> friends;
		public NotifyAddFriend(List<FriendPOD> friends) {
		    this.friends = friends == null ? null : new (friends);
		}
		public override int GetMessageId() {return NetMessageId.centerFriend_notifyAddFriend;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_notifyAddFriend;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_list_pod(friends);
			return si_p;
		}
		public override string ToString() {
			return "CenterFriend.SC_notifyAddFriend { "
			+ "friends="
			+ friends.ToString<FriendPOD>()
			+" }";
		}
	}
	public class NotifyDeleteFriend : MessageNotify {
		private List<long> ids;
		public NotifyDeleteFriend(List<long> ids) {
		    this.ids = ids == null ? null : new (ids);
		}
		public override int GetMessageId() {return NetMessageId.centerFriend_notifyDeleteFriend;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_notifyDeleteFriend;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_list_long(ids);	
			return si_p;
		}
		public override string ToString() {
			return "CenterFriend.SC_notifyDeleteFriend { "
			+ "ids="
			+ ids.ToString<long>()
			+" }";
		}
	}
	public class NotifyUpdateFriend : MessageNotify {
		private List<FriendPOD> friends;
		public NotifyUpdateFriend(List<FriendPOD> friends) {
		    this.friends = friends == null ? null : new (friends);
		}
		public override int GetMessageId() {return NetMessageId.centerFriend_notifyUpdateFriend;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.centerFriend_notifyUpdateFriend;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_list_pod(friends);
			return si_p;
		}
		public override string ToString() {
			return "CenterFriend.SC_notifyUpdateFriend { "
			+ "friends="
			+ friends.ToString<FriendPOD>()
			+" }";
		}
	}
	private class RemoveFriendsRequest : IReceiveMessage
    {
		internal List<long> ids;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            ids = _in.HasRemaining() ? _in.Read_list_long() : default;
		}
        public int GetMessageId() { return NetMessageId.centerFriend_removeFriends; }
        public override string ToString()
        {
            return "CenterFriend.removeFriends"+ ", ids="+ ids.ToString<long>();
        }
    }
	private class ApplyFriendsRequest : IReceiveMessage
    {
		internal List<long> ids;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            ids = _in.HasRemaining() ? _in.Read_list_long() : default;
		}
        public int GetMessageId() { return NetMessageId.centerFriend_applyFriends; }
        public override string ToString()
        {
            return "CenterFriend.applyFriends"+ ", ids="+ ids.ToString<long>();
        }
    }
	private class DealWithApplyRequest : IReceiveMessage
    {
		internal List<long> ids;
		internal bool allow;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            ids = _in.HasRemaining() ? _in.Read_list_long() : default;
            allow = _in.HasRemaining() ? _in.Read_boolean() : default;
		}
        public int GetMessageId() { return NetMessageId.centerFriend_dealWithApply; }
        public override string ToString()
        {
            return "CenterFriend.dealWithApply"+ ", ids="+ ids.ToString<long>()+ ", allow="+ allow;
        }
    }
	private class AddBlacklistRequest : IReceiveMessage
    {
		internal long pid;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            pid = _in.HasRemaining() ? _in.Read_long() : default;
		}
        public int GetMessageId() { return NetMessageId.centerFriend_addBlacklist; }
        public override string ToString()
        {
            return "CenterFriend.addBlacklist"+ ", pid="+ pid;
        }
    }
	private class RemoveBlacklistRequest : IReceiveMessage
    {
		internal List<long> ids;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            ids = _in.HasRemaining() ? _in.Read_list_long() : default;
		}
        public int GetMessageId() { return NetMessageId.centerFriend_removeBlacklist; }
        public override string ToString()
        {
            return "CenterFriend.removeBlacklist"+ ", ids="+ ids.ToString<long>();
        }
    }
	private class SearchPlayerRequest : IReceiveMessage
    {
		internal string guid;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            guid = _in.HasRemaining() ? _in.Read_string() : default;
		}
        public int GetMessageId() { return NetMessageId.centerFriend_searchPlayer; }
        public override string ToString()
        {
            return "CenterFriend.searchPlayer"+ ", guid="+ guid;
        }
    }
	private class SetRemarkRequest : IReceiveMessage
    {
		internal long friendId;
		internal string remark;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            friendId = _in.HasRemaining() ? _in.Read_long() : default;
            remark = _in.HasRemaining() ? _in.Read_string() : default;
		}
        public int GetMessageId() { return NetMessageId.centerFriend_setRemark; }
        public override string ToString()
        {
            return "CenterFriend.setRemark"+ ", friendId="+ friendId+ ", remark="+ remark;
        }
    }
	private class RecommendRequest : IReceiveMessage
    {
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
		}
        public int GetMessageId() { return NetMessageId.centerFriend_recommend; }
        public override string ToString()
        {
            return "CenterFriend.recommend";
        }
    }
	}
#endregion
}